/*
 * Title: 追踪电子表格中的单元格（Spreadsheet Tracking）
 * Author: Yuanshun L
 * Created: 02-Otc-2021
 * Note: Only one codeing head read and one coding text read.
 */

#include<stdio.h>
#include<string.h>
#define maxn 100
#define BIG 10000

int r,c,d[maxn][maxn],d2[maxn][maxn],map[maxn][maxn],columns[maxn];

// 初始化表格d
void initialize(){
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            d[i][j] = i*BIG + j;
        }
    }
}

// 复制d2的n2行（列）到d的n行（列）
void copy(char type,int n,int n2){
    if(type=='R'){
        for(int i=1;i<=c;i++){
            d[n][i] = d2[n2][i];
        }
    }
    else{
        for(int i=1;i<=r;i++){
            d[i][n] = d2[i][n2];
        }
    }
}

void del(char type){
    int i,rd=0;
    memcpy(d2,d,sizeof(d));
    i = type=='R'?r:c;
    for(int j=1;j<=i;j++){
        if(columns[j]==0){
            copy(type,++rd,j);
        }
    }
    if(type=='R') r=rd; else c=rd;
}

void insert(char type){
    int i,rd=0,rd2=0;
    memcpy(d2,d,sizeof(d));
    i = type=='R'?r:c;
    for(int j=1;j<=i;j++){
        if(columns[j]){
            copy(type,++rd,0);
        }
        copy(type,++rd,++rd2);
    }
    if(type=='R') r=rd;else c=rd;
}

void print_d(){
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            if(d[i][j]){
                printf("%6d",d[i][j]);
            }
            else{
                printf("     ");
            }
        }
        printf("\n");
    }
}

int main() {
    int rnd=0,n=0;
    char cmd[10]; // 命令
    int r1,r2,c1,c2,temp;
    int q; // 查询单元格的数量
    int a; // 执行操作的行或者列数

    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);

    // 表格宽r，高c，对表格执行n个操作
    while(scanf("%d%d%d",&r,&c,&n)==3 && r){

        memset(d,0,sizeof(d));
        initialize();
        //printf("Old d:\n");
        //print_d();

        while(n--){
            scanf("%s",cmd);
            if(cmd[0]=='E'){ // 执行交换操作
                scanf("%d%d%d%d",&r1,&r2,&c1,&c2);
                // 使用中间变量交换两个单元格的内容
                temp=d[r1][c1];
                d[r1][c1]=d[r2][c2];
                d[r2][c2]=temp;
            }
            else{ // 执行删除或者插入操作
                memset(columns,0,sizeof(columns));
                scanf("%d",&a);
                // 保存要被执行的行或者列的下标
                for(int i=0;i<a;i++){
                    scanf("%d",&temp);
                    columns[temp] = 1;
                }
                if(cmd[0]=='D'){
                    del(cmd[1]);
                }
                else{
                    insert(cmd[1]);
                }
            }
        }//while(n--)

        // 建立查找表
        memset(map,0,sizeof(map));
        for(int i=1;i<=r;i++){
            for(int j=1;j<=c;j++){
                if(d[i][j]!=0){
                    map[d[i][j]/BIG][d[i][j]%BIG] = i*BIG+j;
                }
            }

        }

        // 考虑是否加换行
        if(rnd>0) printf("\n");
        printf("Spreadsheet #%d\n",++rnd);

        // 查询
        scanf("%d",&q); // 查询个数
        while(q--){
            scanf("%d%d",&r1,&c1);
            printf("Cell data in (%d,%d) ",r1,c1);
            if(map[r1][c1]==0){ // 该单元格被移除了
                printf("GONE\n");
            }
            else{ // 该单元格被移动到其他地方
                printf("moved to (%d,%d)\n",map[r1][c1]/BIG,map[r1][c1]%BIG);
            }
        }


    }//while(scanf("%d%d%d",&r,&c,&n)==3 && r)


    return 0;
}
